// Package
// @author: BaiYZ
// @description:
// @file: main
// @version: 1.0.0
// @date: 2022/6/8 17:41
package main

import (
	"flag"
	"fmt"
)

var serverIp string
var serverPort int

// init
// @Description: 在main方法中执行
func init() {
	//读取命令行绑定命令行参数到flag
	flag.StringVar(&serverIp, "ip", "127.0.0.0", "默认服务器地址是:127.0.0.1")
	flag.IntVar(&serverPort, "port", 7888, "默认端口号:8888")
}

func main() {
	//开始解析命令行
	flag.Parse()
	fmt.Printf("link to : %s:%d\n", serverIp, serverPort)
	//创建连接客户端
	client := NewClient(serverIp, serverPort)
	if client == nil {
		fmt.Println("--init client error !")
		return
	}
	fmt.Println("------inter-chat-client-----")
	//单独开启goroutine处理服务器消息
	go client.DealResp()
	//客户端业务
	client.Run()
}

// Run
// @Description: 处理实际业务
// @receiver client
func (client *Client) Run() {
	//一直判断知道退出
	for client.flag != 0 {
		//一直循环显示菜单，直到菜单正确选择
		for !client.menu() {
		}
		//根据模式处理模式
		switch client.flag {
		case 1:
			//私聊模式
			fmt.Println("private chat mode")
			client.PrivateChat()
			break
		case 2:
			//公聊模式
			fmt.Println("public chat mode")
			client.PublicChat()
			break
		case 3:
			//重命名
			fmt.Println("rename mode")
			client.UpdateUserName()
			break
		case 0:
			//退出业务
			fmt.Println("exit")
			break
		}
	}
}
